package com.zhouyer.study.server;

import java.io.IOException;
import java.io.InputStream;

/**
 * 请求对象Request：把请求信息封装为Request对象（根据InputStream输入流进行封装）
 *
 * @author zhouyao
 * @version 1.0
 * @date 2021/9/14 11:37 上午
 */
public class Request {
    /**
     * 请求方式，比如GET/POST
     */
    private String method;

    /**
     * 请求路径，比如/，/index.html
     */
    private String url;
    /**
     * 主机地址，默认为localhost
     */
    private String host = "localhost";

    /**
     * 请求输入字节流,其他属性从输⼊流中解析出来
     */
    private InputStream inputStream;

    public Request() {
    }

    public Request(InputStream inputStream) throws IOException {
        this.inputStream = inputStream;
        // 从输入流中获取请求信息，这些都是基础IO，我们不使用框架，就使用BIO
        // 这里可以有一个问题，由于网络存在间断性问题，有空能这里获取是一个空的
        int count = 0;
        while (count == 0) {
            count = inputStream.available();
        }

        byte[] bytes = new byte[count];
        inputStream.read(bytes);
        String inputStr = new String(bytes);
        // 通过截取方式，来截取GET / HTTP/1.1
        String firstLineStr = inputStr.split("\\n")[0];
        String[] strings = firstLineStr.split(" ");
        this.method = strings[0];
        this.url = strings[1];
        System.out.println("======>请求方式method：" + this.method);
        System.out.println("======>请求地址：" + this.url);
    }

    public String getMethod() {
        return method;
    }

    public void setMethod(String method) {
        this.method = method;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public InputStream getInputStream() {
        return inputStream;
    }

    public void setInputStream(InputStream inputStream) {
        this.inputStream = inputStream;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }
}
